<!doctype html>
<html lang="zh-CN">
<head>
	<meta charset="utf-8">
	<title>Laravel - 为 WEB 艺术家创造的 PHP 框架。 | Laravel 中文网</title>
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
	<meta name="author" content="Laravel 中文网">
	<meta name="description" content="Laravel - 为 WEB 艺术家创造的 PHP 框架。| Laravel 中文网">
	<meta name="keywords" content="Laravel中文社区,php框架,laravel中文网,php framework,restful routing,laravel,laravel php">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<!--[if lte IE 9]>
		<script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
	<![endif]-->
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<link rel="stylesheet" href="../../assets/css/laravel.css">
</head>
<body class="docs language-php">

	<span class="overlay"></span>

	<nav class="main">
		<div class="container">
			<a href="../../index.html" class="brand">
				<img src="../../assets/img/laravel-logo.png" height="30">
				Laravel
			</a>

			<div class="responsive-sidebar-nav">
				<a href="#" class="toggle-slide menu-link btn">&#9776;</a>
			</div>

				<div class="switcher">
					<div class="dropdown">
						<button class="btn dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-expanded="true">
							<!--<span class="faint">v</span> -->
							4.0
							<span class="caret"></span>
						</button>
						<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
								<li role="presentation">
									<a role="menuitem" tabindex="-1" href="../5.0/index.html">5.0</a>
								</li>
								<li role="presentation">
									<a role="menuitem" tabindex="-1" href="../4.2/index.html">4.2</a>
								</li>
								<li role="presentation">
									<a role="menuitem" tabindex="-1" href="../4.1/index.html">4.1</a>
								</li>
								<li role="presentation">
									<a role="menuitem" tabindex="-1" href="index.html">4.0</a>
								</li>
						</ul>
					</div>
				</div>

			<ul class="main-nav">
				<li class="nav-docs"><a href="../index.html">中文文档</a></li>
				<li class="nav-community"><a href="http://wenda.golaravel.com" target="_blank">问答社区</a></li>
				<li class="nav-api"><a href="http://laravel.com/api/5.0/" target="_blank">API</a></li>
				<li class="nav-laracasts"><a href="https://laracasts.com" target="_blank">视频教程（国外）</a></li>
				<li class="nav-forge"><a href="https://forge.laravel.com" target="_blank">Forge</a></li>
				
			</ul>
		</div>
	</nav>

		<nav id="slide-menu" class="slide-menu" role="navigation">
		
		<div class="brand">
			<a href="../../index.html">
				<img src="../../assets/img/laravel-logo-white.png" height="50">
			</a>
		</div>

		<ul class="slide-main-nav">
			<li><a href="../../index.html">首页</a></li>
			<li class="nav-docs"><a href="../index.html">中文文档</a></li>
			<li class="nav-community"><a href="http://wenda.golaravel.com" target="_blank">问答社区</a></li>
			<li class="nav-api"><a href="http://laravel.com/api/5.0/" target="_blank">API</a></li>
			<li class="nav-laracasts"><a href="https://laracasts.com" target="_blank">视频教程（国外）</a></li>
			<li class="nav-forge"><a href="https://forge.laravel.com" target="_blank">Forge</a></li>
			
		</ul>

		<div class="slide-docs-nav">
			<h2>文档目录</h2>
			<ul>
<li>序言
<ul>
<li><a href="introduction.html">简介</a></li>
<li><a href="quick.html">快速入门</a></li>
<li><a href="contributing.html">为Laravel做贡献</a></li>
</ul>
</li>
<li>开始学习
<ul>
<li><a href="installation.html">安装</a></li>
<li><a href="configuration.html">配置</a></li>
<li><a href="lifecycle.html">Request的生命周期</a></li>
<li><a href="routing.html">路由</a></li>
<li><a href="requests.html">请求与输入</a></li>
<li><a href="responses.html">视图 &amp; Response</a></li>
<li><a href="controllers.html">控制器</a></li>
<li><a href="errors.html">错误 &amp; 日志</a></li>
</ul>
</li>
<li>深度历险
<ul>
<li><a href="cache.html">缓存</a></li>
<li><a href="extending.html">核心扩展</a></li>
<li><a href="events.html">事件</a></li>
<li><a href="facades.html">Facades</a></li>
<li><a href="html.html">表单 &amp; HTML</a></li>
<li><a href="helpers.html">有用的工具函数</a></li>
<li><a href="ioc.html">IoC 容器</a></li>
<li><a href="localization.html">本地化</a></li>
<li><a href="mail.html">邮件</a></li>
<li><a href="packages.html">扩展包开发</a></li>
<li><a href="pagination.html">分页</a></li>
<li><a href="queues.html">队列</a></li>
<li><a href="security.html">安全</a></li>
<li><a href="session.html">Session</a></li>
<li><a href="templates.html">模版</a></li>
<li><a href="testing.html">单元测试</a></li>
<li><a href="validation.html">验证</a></li>
</ul>
</li>
<li>数据库
<ul>
<li><a href="database.html">基本用法</a></li>
<li><a href="queries.html">查询构造器</a></li>
<li><a href="eloquent.html">Eloquent ORM</a></li>
<li><a href="schema.html">结构生成器</a></li>
<li><a href="migrations.html">迁移 &amp; 数据填充</a></li>
<li><a href="redis.html">Redis</a></li>
</ul>
</li>
<li>Artisan 命令行工具
<ul>
<li><a href="artisan.html">概览</a></li>
<li><a href="commands.html">Artisan 开发</a></li>
</ul>
</li>
<li>贡献者
<ul>
<li><a href="contributors.html">中文翻译贡献者名单</a></li>
</ul>
</li>
</ul>

		</div>

	</nav>

	<div class="docs-wrapper container">

		<section class="sidebar">
			<ul>
<li>序言
<ul>
<li><a href="introduction.html">简介</a></li>
<li><a href="quick.html">快速入门</a></li>
<li><a href="contributing.html">为Laravel做贡献</a></li>
</ul>
</li>
<li>开始学习
<ul>
<li><a href="installation.html">安装</a></li>
<li><a href="configuration.html">配置</a></li>
<li><a href="lifecycle.html">Request的生命周期</a></li>
<li><a href="routing.html">路由</a></li>
<li><a href="requests.html">请求与输入</a></li>
<li><a href="responses.html">视图 &amp; Response</a></li>
<li><a href="controllers.html">控制器</a></li>
<li><a href="errors.html">错误 &amp; 日志</a></li>
</ul>
</li>
<li>深度历险
<ul>
<li><a href="cache.html">缓存</a></li>
<li><a href="extending.html">核心扩展</a></li>
<li><a href="events.html">事件</a></li>
<li><a href="facades.html">Facades</a></li>
<li><a href="html.html">表单 &amp; HTML</a></li>
<li><a href="helpers.html">有用的工具函数</a></li>
<li><a href="ioc.html">IoC 容器</a></li>
<li><a href="localization.html">本地化</a></li>
<li><a href="mail.html">邮件</a></li>
<li><a href="packages.html">扩展包开发</a></li>
<li><a href="pagination.html">分页</a></li>
<li><a href="queues.html">队列</a></li>
<li><a href="security.html">安全</a></li>
<li><a href="session.html">Session</a></li>
<li><a href="templates.html">模版</a></li>
<li><a href="testing.html">单元测试</a></li>
<li><a href="validation.html">验证</a></li>
</ul>
</li>
<li>数据库
<ul>
<li><a href="database.html">基本用法</a></li>
<li><a href="queries.html">查询构造器</a></li>
<li><a href="eloquent.html">Eloquent ORM</a></li>
<li><a href="schema.html">结构生成器</a></li>
<li><a href="migrations.html">迁移 &amp; 数据填充</a></li>
<li><a href="redis.html">Redis</a></li>
</ul>
</li>
<li>Artisan 命令行工具
<ul>
<li><a href="artisan.html">概览</a></li>
<li><a href="commands.html">Artisan 开发</a></li>
</ul>
</li>
<li>贡献者
<ul>
<li><a href="contributors.html">中文翻译贡献者名单</a></li>
</ul>
</li>
</ul>

		</section>

		<article>
			<h1>表单 &amp; HTML</h1>
<ul>
<li><a href="#opening-a-form">创建表单</a></li>
<li><a href="#csrf-protection">CSRF防御机制</a></li>
<li><a href="#form-model-binding">表单与模型绑定</a></li>
<li><a href="#labels">Label 标签</a></li>
<li><a href="#text">单行文本、多行文本、密码和隐藏表单域</a></li>
<li><a href="#checkboxes-and-radio-buttons">多选框和单选框</a></li>
<li><a href="#file-input">文件上传</a></li>
<li><a href="#drop-down-lists">下拉菜单</a></li>
<li><a href="#buttons">按钮</a></li>
<li><a href="#custom-macros">自定义宏</a></li>
<li><a href="#generating-urls">生成URL</a></li>
</ul>
<p><a name="opening-a-form"></a></p>
<h2>创建表单</h2>
<p><strong>创建表单</strong></p>
<pre><code>{{ Form::open(array('url' =&gt; 'foo/bar')) }}
    //
{{ Form::close() }}
</code></pre>
<p>默认使用 <code>POST</code> 方法；当然，你也可以指定使用其他方法提交表单：</p>
<pre><code>echo Form::open(array('url' =&gt; 'foo/bar', 'method' =&gt; 'put'))
</code></pre>
<blockquote>
<p><strong>注意：</strong> 因为 HTML 表单只支持 <code>POST</code> 方法，在使用 <code>PUT</code> 和 <code>DELETE</code> 方法时框架会自动通过一个 <code>_method</code> 隐藏域来发送伪装的方法信息。</p>
</blockquote>
<p>你也可以创建一个表单指向已定义的路由或者控制器操作：</p>
<pre><code>echo Form::open(array('route' =&gt; 'route.name'))

echo Form::open(array('action' =&gt; 'Controller@method'))
</code></pre>
<p>如果你需要在表单中上传文件，请添加一个 <code>files</code> 参数到数组中：</p>
<pre><code>echo Form::open(array('url' =&gt; 'foo/bar', 'files' =&gt; true))
</code></pre>
<p><a name="csrf-protection"></a></p>
<h2>CSRF防御机制</h2>
<p>Laravel框架提供了一种简单的方法帮助你的应用抵御CSRF（跨站请求伪造）式攻击。Laravel框架会自动在用户 session 中存放一个随机令牌（token），并且将这个令牌作为一个隐藏字段包含在表单信息中。当然，你也可以使用表单的 <code>token</code> 方法直接调用令牌字段的HTML代码：</p>
<p><strong>添加CSRF令牌到表单中</strong></p>
<pre><code>echo Form::token();
//译者注，调用结果类似： &lt;input name=&quot;_token&quot; type=&quot;hidden&quot; value=&quot;BndR9iWzoKiseXuADa7gwzG5zf2ZKK3pPiRNvOGE&quot;&gt;
</code></pre>
<p><strong>在路由中附加CSRF过滤器</strong></p>
<pre><code>Route::post('profile', array('before' =&gt; 'csrf', function()
{
    //
}));
</code></pre>
<p><a name="form-model-binding"></a></p>
<h2>表单与模型绑定</h2>
<p>你可以使用 <code>Form::model</code> 方法将模型中的内容填充到表单中去：</p>
<p><strong>创建一个模型表单</strong></p>
<pre><code>echo Form::model($user, array('route' =&gt; array('user.update', $user-&gt;id)))
</code></pre>
<p>当你创建一个表单元素（如文本输入字段）时，表单域的值会被自动设置成与之匹配的模型属性的值。例如表单中name属性为 <code>email</code> 的文本域的值会被设置为用户模型中 <code>email</code> 属性的值。不仅仅这样，当Session数据中有项目与表单域名称相匹配，Session值的填充优先级会高于模型的值。具体的优先级如下：</p>
<ol>
<li>Session 数据 （旧的输入数据）</li>
<li>已传输的数据</li>
<li>模型属性数据</li>
</ol>
<p>这可以帮助你快速建立与模型绑定的表单，而且当服务器端验证出表单错误时可以轻松回填数据！</p>
<blockquote>
<p><strong>注意：</strong> 当你使用 <code>Form::model</code> 时，别忘了在表单结尾处加上 <code>Form::close</code> ！</p>
</blockquote>
<p><a name="labels"></a></p>
<h2>Label 标签</h2>
<p><strong>获取一个 label 标签元素</strong></p>
<pre><code>echo Form::label('email', 'E-Mail Address');
//译者注，输出结果为： &lt;label for=&quot;email&quot;&gt;E-Mail Address&lt;/label&gt;
</code></pre>
<p><strong>设定其他 HTML 标签属性</strong></p>
<pre><code>echo Form::label('email', 'E-Mail Address', array('class' =&gt; 'awesome'));
//译者注，输出结果为： &lt;label for=&quot;email&quot; class=&quot;awesome&quot;&gt;E-Mail Address&lt;/label&gt;
</code></pre>
<blockquote>
<p><strong>注意：</strong> 当你创建了一个label标签后，name值与之相匹配的表单元素会被自动加上一个同名的ID属性。</p>
</blockquote>
<p><a name="text"></a></p>
<h2>单行文本、多行文本、密码和隐藏表单域</h2>
<p><strong>获取一个单行文本域</strong></p>
<pre><code>echo Form::text('username');
//译者注，输出结果为： &lt;input name=&quot;username&quot; type=&quot;text&quot;&gt;
</code></pre>
<p><strong>设置一个默认的值</strong></p>
<pre><code>echo Form::text('email', 'example@gmail.com');
//译者注，输出结果为： &lt;input name=&quot;email&quot; type=&quot;text&quot; value=&quot;example@gmail.com&quot;&gt;
</code></pre>
<blockquote>
<p><strong>注意：</strong> 调用 <em>hidden</em> 隐藏域和 <em>textarea</em> 多行文本表单域的方法和调用 <em>text</em> 单行文本域的方法是一样的。</p>
</blockquote>
<p><strong>获取一个密码域</strong></p>
<pre><code>echo Form::password('password');
//译者注，输出结果为： &lt;input name=&quot;password&quot; type=&quot;password&quot; value=&quot;&quot;&gt;
</code></pre>
<p><a name="checkboxes-and-radio-buttons"></a></p>
<h2>多选框和单选框</h2>
<p><strong>获取一个多选框和单选框</strong></p>
<pre><code>echo Form::checkbox('name', 'value');
//译者注，输出结果为： &lt;input name=&quot;name&quot; type=&quot;checkbox&quot; value=&quot;value&quot;&gt;
echo Form::radio('name', 'value');
//译者注，输出结果为： &lt;input name=&quot;name&quot; type=&quot;radio&quot; value=&quot;value&quot;&gt;
</code></pre>
<p><strong>获取一个已选中的多选框和单选框</strong></p>
<pre><code>echo Form::checkbox('name', 'value', true);
//译者注，输出结果为： &lt;input checked=&quot;checked&quot; name=&quot;name&quot; type=&quot;checkbox&quot; value=&quot;value&quot;&gt;
echo Form::radio('name', 'value', true);
//译者注，输出结果为： &lt;input checked=&quot;checked&quot; name=&quot;name&quot; type=&quot;radio&quot; value=&quot;value&quot;&gt;
</code></pre>
<p><a name="file-input"></a></p>
<h2>文件上传</h2>
<p><strong>获取一个文件上传域</strong></p>
<pre><code>echo Form::file('image');
//译者注，输出结果为： &lt;input name=&quot;image&quot; type=&quot;file&quot;&gt;
</code></pre>
<p><a name="drop-down-lists"></a></p>
<h2>下拉菜单</h2>
<p><strong>获取一个下拉菜单</strong></p>
<pre><code>echo Form::select('size', array('L' =&gt; 'Large', 'S' =&gt; 'Small'));
//译者注，输出结果为： &lt;select name=&quot;size&quot;&gt;&lt;option value=&quot;L&quot;&gt;Large&lt;/option&gt;&lt;option value=&quot;S&quot;&gt;Small&lt;/option&gt;&lt;/select&gt;
</code></pre>
<p><strong>获取一个已选中默认值的下拉菜单</strong></p>
<pre><code>echo Form::select('size', array('L' =&gt; 'Large', 'S' =&gt; 'Small'), 'S');
//译者注，输出结果为： &lt;select name=&quot;size&quot;&gt;&lt;option value=&quot;L&quot;&gt;Large&lt;/option&gt;&lt;option value=&quot;S&quot; selected=&quot;selected&quot;&gt;Small&lt;/option&gt;&lt;/select&gt;
</code></pre>
<p><strong>获取一个分组下拉菜单</strong></p>
<pre><code>echo Form::select('animal', array(
    'Cats' =&gt; array('leopard' =&gt; 'Leopard'),
    'Dogs' =&gt; array('spaniel' =&gt; 'Spaniel'),
));
//译者注，输出结果为： &lt;select name=&quot;animal&quot;&gt;&lt;optgroup label=&quot;Cats&quot;&gt;&lt;option value=&quot;leopard&quot;&gt;Leopard&lt;/option&gt;&lt;/optgroup&gt;&lt;optgroup label=&quot;Dogs&quot;&gt;&lt;option value=&quot;spaniel&quot;&gt;Spaniel&lt;/option&gt;&lt;/optgroup&gt;&lt;/select&gt;
</code></pre>
<p><strong>生成一个包含可取值范围的下拉菜单</strong></p>
<pre><code>echo Form::selectRange('number', 10, 20);
</code></pre>
<p><strong>生成月份名称列表</strong></p>
<pre><code>echo Form::selectMonth('month');
</code></pre>
<p><a name="buttons"></a></p>
<h2>按钮</h2>
<p><strong>获取一个提交按钮</strong></p>
<pre><code>echo Form::submit('Click Me!');
//译者注，输出结果为： &lt;input type=&quot;submit&quot; value=&quot;Click Me!&quot;&gt;
</code></pre>
<blockquote>
<p><strong>注意：</strong> 如果需要创建一个单独的表单元素，可以使用 <em>button</em> 方法。它的调用方式和 <em>submit</em> 方法一样。</p>
</blockquote>
<p><a name="custom-macros"></a></p>
<h2>自定义宏</h2>
<p>你可以轻松定义一个表单宏来帮助你创建表单。下面是使用表单宏的方法，注册一个宏名称，然后在闭包函数中定义对应的操作：</p>
<p><strong>注册一个表单宏</strong></p>
<pre><code>Form::macro('myField', function()
{
    return '&lt;input type=&quot;awesome&quot;&gt;';
});
</code></pre>
<p>然后你就可以使用刚刚定义的宏名称调用它：</p>
<p><strong>调用一个自定义表单宏</strong></p>
<pre><code>echo Form::myField();
</code></pre>
<p><a name="generating-urls"></a>
##生成URL</p>
<p>请参考 <a href="../helpers#urls">helpers</a> 文档了解更多关于生成URL的信息。</p>

		</article>
	</div>


	<footer class="main">
		<ul>
			<li class="nav-docs"><a href="../index.html">中文文档</a></li>
			<li class="nav-community"><a href="http://wenda.golaravel.com" target="_blank">问答社区</a></li>
			<li class="nav-api"><a href="http://laravel.com/api/5.0/" target="_blank">API</a></li>
			<li class="nav-laracasts"><a href="https://laracasts.com" target="_blank">视频教程（国外）</a></li>
			<li class="nav-forge"><a href="https://forge.laravel.com" target="_blank">Forge</a></li>
			
		</ul>
		<p>Laravel is a trademark of Taylor Otwell. Copyright &copy; Taylor Otwell.</p>
		<p class="less-significant"><a href="http://jackmcdade.com" target="_blank">Design by Jack McDade</a></p>
	</footer>

	<script src="../../assets/js/laravel.js"></script>
	<script src="../../assets/js/viewport-units-buggyfill.js"></script>
	<script>window.viewportUnitsBuggyfill.init();</script>
	<script type="text/javascript">
	var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
	document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3Fc8d13872a523d9c286aa7affbe0921f1' type='text/javascript'%3E%3C/script%3E"));
	</script>
</body>
</html>
